﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Security.Principal;
using App_Negocio;

public partial class Eventos_de_Cliente : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            IPrincipal p = HttpContext.Current.User;
            if (!p.IsInRole("Cliente"))
            {
                Session["Mensaje"] = "Usted no posee los permisos necesarios para ingresar a esta pagina";

                if (Session["Identificador"] != null)
                {
                    //ESTO NUNCA OCURRE
                }
                else
                {
                    Response.Redirect("login.aspx");
                }
            }
            else
            {
                actualizarPagina();
            }
        }
    }

    private void actualizarPagina()
    {
        bool hayEventos = listarEventos();
        
        lblMensaje.Visible = false;
        
        if (!hayEventos)
        {
            lblMensaje.Text = " No existen eventos del cliente ";
            lblMensaje.Visible = true;
        }
    }

    protected bool listarEventos()
    {
       
        App_Negocio.Evento evento = new App_Negocio.Evento();
        evento.Cliente = new Cliente();
        evento.Cliente.ClienteId = int.Parse(Session["Identificador"].ToString());
        DataTable dt = evento.buscarEventosCliente();
        DataView dv = dt.DefaultView;
        Session["dvEvento"] = dv;
        gvEvento.DataSource = dv;
        gvEvento.DataKeyNames = new string[] { "IdEve", "Fecha", "Apellido", "Nombre", "MontoTotal", "EstadoEve", "TipoEve", "HoraInicio", "HoraFin", "NomSalon", "Distribucion", "CantPersonas" };
        gvEvento.DataBind();
        bool hayFilas = false;
        if (dt.Rows.Count > 0)
        {
            hayFilas = true;
        }

        return hayFilas;
    }

    protected void gvEvento_SelectedIndexChanged(object sender, EventArgs e)
    {
        cargarDetalleEvento();
    }

    protected void cargarDetalleEvento()
    {

        App_Negocio.Evento evento = new App_Negocio.Evento();
        evento.Id = int.Parse(string.Format(gvEvento.SelectedDataKey.Values["IdEve"].ToString()));
        lblCliente.Text = string.Format(gvEvento.SelectedDataKey.Values["Apellido"].ToString());
        lblFecha.Text = DateTime.Parse(string.Format(gvEvento.SelectedDataKey.Values["Fecha"].ToString())).ToShortDateString();
        lblHoraInicio.Text = string.Format(gvEvento.SelectedDataKey.Values["HoraInicio"].ToString());
        lblHoraFin.Text = string.Format(gvEvento.SelectedDataKey.Values["HoraFin"].ToString());
        lblTipoEvento.Text = string.Format(gvEvento.SelectedDataKey.Values["TipoEve"].ToString());
        lblSalon.Text = string.Format(gvEvento.SelectedDataKey.Values["NomSalon"].ToString());
        lblEstado.Text = string.Format(gvEvento.SelectedDataKey.Values["EstadoEve"].ToString());
        lblMontoTotal.Text = string.Format(gvEvento.SelectedDataKey.Values["MontoTotal"].ToString());

        DataTable dt = evento.listarCobros();
        DataView dv = dt.DefaultView;

        double abonado = 0;
        foreach (DataRow dr in dt.Rows)
        {
            abonado += float.Parse(dr["Monto"].ToString());

        }

        lblMontoRestante.Text = "" + (Double.Parse(string.Format(gvEvento.SelectedDataKey.Values["MontoTotal"].ToString())) - abonado);
       
    }

    protected void gvEvento_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataView dv = ((DataView)Session["dvEvento"]);
        dv.Sort = e.SortExpression;
        gvEvento.DataSource = dv;
        gvEvento.PageIndex = 0;
        gvEvento.DataBind();
    }
      
    protected void btnAsignarEmpleados_Click(object sender, EventArgs e)
    {
        App_Negocio.Evento eventoSeleccionado = new App_Negocio.Evento();
        eventoSeleccionado.Id = int.Parse(string.Format(gvEvento.SelectedDataKey.Values["IdEve"].ToString()));
        eventoSeleccionado.FechaEvento = DateTime.Parse(string.Format(gvEvento.SelectedDataKey.Values["Fecha"].ToString())) ;
        eventoSeleccionado.HoraInicio = string.Format(gvEvento.SelectedDataKey.Values["HoraInicio"].ToString());;
        eventoSeleccionado.HoraFin = string.Format(gvEvento.SelectedDataKey.Values["HoraFin"].ToString()); ;
        eventoSeleccionado.CantPersonas = int.Parse(string.Format(gvEvento.SelectedDataKey.Values["CantPersonas"].ToString()));
        eventoSeleccionado.Cliente = new Cliente();
        eventoSeleccionado.Cliente.ApeCliente = string.Format(gvEvento.SelectedDataKey.Values["Apellido"].ToString());
        eventoSeleccionado.Cliente.NomCliente = string.Format(gvEvento.SelectedDataKey.Values["Nombre"].ToString());
        eventoSeleccionado.TipoEvento = new EventoTipo();
        eventoSeleccionado.TipoEvento.Nombre = string.Format(gvEvento.SelectedDataKey.Values["TipoEve"].ToString());
        eventoSeleccionado.Salon = new Salon();
        eventoSeleccionado.Salon.Nombre = string.Format(gvEvento.SelectedDataKey.Values["NomSalon"].ToString());
        eventoSeleccionado.ImgDistribucionMesa = string.Format(gvEvento.SelectedDataKey.Values["Distribucion"].ToString());
        Session["EventoSeleccionado"] = eventoSeleccionado;     
        
        Response.Redirect("AsignarInvitados.aspx");
    }
    
    protected void btnDistribucionMesa_Click(object sender, EventArgs e)
    {
        App_Negocio.Evento eventoSeleccionado = new App_Negocio.Evento();
        eventoSeleccionado.Id = int.Parse(string.Format(gvEvento.SelectedDataKey.Values["IdEve"].ToString()));
        eventoSeleccionado.FechaEvento = DateTime.Parse(string.Format(gvEvento.SelectedDataKey.Values["Fecha"].ToString()));
        eventoSeleccionado.HoraInicio = string.Format(gvEvento.SelectedDataKey.Values["HoraInicio"].ToString()); ;
        eventoSeleccionado.HoraFin = string.Format(gvEvento.SelectedDataKey.Values["HoraFin"].ToString()); ;
        eventoSeleccionado.CantPersonas = int.Parse(string.Format(gvEvento.SelectedDataKey.Values["CantPersonas"].ToString()));
        eventoSeleccionado.Cliente = new Cliente();
        eventoSeleccionado.Cliente.NomCliente = string.Format(gvEvento.SelectedDataKey.Values["Apellido"].ToString());
        eventoSeleccionado.TipoEvento = new EventoTipo();
        eventoSeleccionado.TipoEvento.Nombre = string.Format(gvEvento.SelectedDataKey.Values["TipoEve"].ToString());
        eventoSeleccionado.Salon = new Salon();
        eventoSeleccionado.Salon.Nombre = string.Format(gvEvento.SelectedDataKey.Values["NomSalon"].ToString());
        eventoSeleccionado.ImgDistribucionMesa = string.Format(gvEvento.SelectedDataKey.Values["Distribucion"].ToString());
        Session["EventoSeleccionado"] = eventoSeleccionado;

        Response.Redirect("DistribucionMesas.aspx");
    }
    
    protected void btnCerrar_Click(object sender, EventArgs e)
    {
        Response.Redirect("principal_Clientes.aspx");

    }
    
    protected void btnArmarMesa_Click(object sender, EventArgs e)
    {
        Response.Redirect("ArmarDiseñoMesa.aspx");
    }
}
